class Rectangle
{
    private:
	float width_m, height_m, area_m, perimeter_m;
	void isValid(unsigned int width, unsigned int height);
	void isValid(float width, float height);	
	void isValid(float width, unsigned int height);
	void isValid(unsigned int width, float height);
	float convertPrecision(float value) const;
	

    public:
	Rectangle(unsigned int width, unsigned int height);
	Rectangle(float width, float height);
	Rectangle(float width, unsigned int height);
	Rectangle(unsigned int width, float height);
	Rectangle(float side);
	Rectangle(unsigned int side);

	void setWidth(unsigned int width);
	void setWidth(float width);
	void setHeight(unsigned int height);
	void setHeigth(float height);

	float getArea() const;

	float getPerimeter() const;
};

